package core

import "fmt"

// B（字节）
// KB（千字节，1KB = 1024B）
// MB（兆字节，1MB = 1024KB）
// GB（吉字节，1GB = 1024MB）
// TB（太字节，1TB = 1024GB）
// PB（拍字节，1PB = 1024TB）
// EB（艾字节，1EB = 1024PB）
// ZB（泽字节，1ZB = 1024EB）
// YB（尧字节，1YB = 1024ZB）
// 转换字节数为人类可读格式
func GetFormatValue(bytes uint64) string {
	const (
		_  = iota
		KB = 1 << (10 * iota) // 1024
		MB
		GB
		TB
		PB
		EB
	)
	switch {
	case bytes >= EB:
		return fmt.Sprintf("%.2f PB", float64(bytes)/EB)
	case bytes >= PB:
		return fmt.Sprintf("%.2f PB", float64(bytes)/PB)
	case bytes >= TB:
		return fmt.Sprintf("%.2f TB", float64(bytes)/TB)
	case bytes >= GB:
		return fmt.Sprintf("%.2f GB", float64(bytes)/GB)
	case bytes >= MB:
		return fmt.Sprintf("%.2f MB", float64(bytes)/MB)
	case bytes >= KB:
		return fmt.Sprintf("%.2f KB", float64(bytes)/KB)
	default:
		return fmt.Sprintf("%d B", bytes)
	}
}
